package org.example.chapter8.controller;

import com.mongodb.client.result.DeleteResult;
import com.mongodb.client.result.UpdateResult;
import org.example.chapter8.pojo.User;
import org.example.chapter8.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.List;

/**
 * @author CoderXshuai
 * @date 2020/8/4/0004 21:08
 */
@Controller
@RequestMapping("/user")
public class UserController {
    //后面会给出其操作方法
    @Autowired
    private UserService userService;
    @Autowired
    private MongoTemplate mongoTemplate;

    //跳转到测试页面
    @RequestMapping("/page")
    public String page() {
        return "user";
    }

    /**
     * 保存(新增或者更新)用户
     *
     * @param user 用户
     * @return 用户信息
     */
    @RequestMapping("/save")
    @ResponseBody
    public User saveUser(@RequestBody User user) {
        userService.saveUser(user);
        return user;
    }

    /**
     * 获取用户
     *
     * @param id 用户主键
     * @return 用户信息
     */
    @RequestMapping("/get")
    @ResponseBody
    public User getUser(String id) {
        User user = userService.getUser(id);
        return user;
    }

    /**
     * 查询用户
     *
     * @param userName 用户名称
     * @param note     备注
     * @param skip     跳过用户个数
     * @param limit    限制返回用户个数
     * @return
     */
    @RequestMapping("/find")
    @ResponseBody
    public List<User> findUser(String userName, String note, Integer skip, Integer limit) {
        List<User> userList = userService.findUser(userName, note, skip, limit);
        return userList;
    }

    /**
     * 更新用户部分属性
     *
     * @param id       用户编号
     * @param userName 用户名称
     * @param note     备注
     * @return 更新结果
     */
    @RequestMapping("/update")
    @ResponseBody
    public UpdateResult updateUser(String id, String userName, String note) {
        return userService.updateUser(id, userName, note);
    }

    /**
     * 删除用户
     *
     * @param id 用户主键
     * @return 删除结果
     */
    @RequestMapping("/delete")
    @ResponseBody
    public DeleteResult deleteUser(String id) {
        return userService.deleteUser(id);
    }
}
